package org.codingq92.basic.thread;

/**
 * 可重入锁<br/>
 * 同一个线程可以自己获取自己已经获取到的锁 就是重入锁<br/>
 * new Thread(ReLock::reLock).start(); reLock方法就在递归自己 重复获取了 ReLock.class 锁!!!
 *
 * @author: CodingQ92
 * @date: 2025/6/4 21:56
 */
public class ReLock {
    public static void main(String[] args) {
        new Thread(ReLock::reLock).start();
    }

    private static int cnt = 0;

    private static void reLock() {
        synchronized (ReLock.class) {
            if (cnt == 3) {
                return;
            } else {
                cnt++;
                System.out.println(Thread.currentThread().getName() + " cnt=" + cnt);
                reLock();
            }
        }
    }
}
